﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using com.clinica.business.BE.actplansalud;
using com.clinica.business.BE.comun;
using LiclUtil;
using LiclActPlanSalud;
using LiclActPlanSalud.Views;
using System.Text;

namespace wesiGestClinica.actplansalud.Controles
{
    public partial class UCBuscarEmpresa : System.Web.UI.UserControl
    {
        LiclPlanSaludController oController = new LiclPlanSaludController();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    lbl_TituloModulo.Text = "Búsqueda de Empresas";
                    TipoBus = 1;
                    IniciarControles();
                    if (TipoBus == 2 && txt_DescripcionControl.Text.Trim() != string.Empty)
                        btnBuscarControl_Click(null, null);
                }
                catch (Exception ex)
                {

                }
            }
            lblMensaje.Visible = false;
        }
        #region Eventos
        protected void btnBuscarControl_Click(object sender, EventArgs e)
        {
            EmpresaBE oEmpresa = new EmpresaBE();
            dg_EmpresaControl.DataSource = new List<EmpresaBE>();
            dg_EmpresaControl.DataBind();
            lblMensaje.Text = string.Empty;

            if (rbu_PorDescripcion.Checked)
            {
                if (txt_Descripcion.Text.Trim() != string.Empty)
                {
                    if (ValidarCarateres(txt_DescripcionControl.Text.Trim(), 2))
                    {
                        oEmpresa.RazonSocial = txt_DescripcionControl.Text.Trim();
                        BuscarEmpresa(oEmpresa);
                    }
                    else
                    {
                        lblMensaje.Visible = true;
                        lblMensaje.Text = " Debe ingresar caracteres válidos.";
                        dg_EmpresaControl.DataSource = new List<EmpresaBE>();
                        dg_EmpresaControl.DataBind();
                    }
                }
                else
                {
                    lblMensaje.Visible = true;
                    lblMensaje.Text = " Debe ingresar al menos una razón Social.";
                    dg_EmpresaControl.DataSource = new List<EmpresaBE>();
                    dg_EmpresaControl.DataBind();
                }
            }
            else if (rbu_PorNumero.Checked)
            {
                if (txt_NumeroSolicitud.Text.Trim() != string.Empty)
                {
                    if (ValidarCarateres(txt_NumeroSolicitud.Text.Trim(), 1))
                    {
                        try
                        {
                            oEmpresa.Ruc = txt_NumeroSolicitud.Text.Trim();
                        }
                        catch (Exception)
                        {
                            lblMensaje.Visible = true;
                            lblMensaje.Text = " Debe ingresar un Ruc.";
                            dg_EmpresaControl.DataSource = new List<EmpresaBE>();
                            dg_EmpresaControl.DataBind();
                        }
                        BuscarEmpresa(oEmpresa);
                    }
                    else
                    {
                        lblMensaje.Visible = true;
                        lblMensaje.Text = " Debe ingresar caracteres numéricos.";
                        dg_EmpresaControl.DataSource = new List<EmpresaBE>();
                        dg_EmpresaControl.DataBind();
                    }
                }
                else
                {
                    lblMensaje.Visible = true;
                    lblMensaje.Text = " Debe ingresar un Ruc.";
                    dg_EmpresaControl.DataSource = new List<EmpresaBE>();
                    dg_EmpresaControl.DataBind();
                }
            }
        }
        protected void rbu_NumeroSol_CheckedChanged(object sender, EventArgs e)
        {
            TipoBus = 1;
            txt_NumeroSolicitud.ReadOnly = true;
            txt_NumeroControl.ReadOnly = false;
            rbu_PorDescripcion.Checked = false;
            txt_Descripcion.Text = string.Empty;
            txt_NumeroSolicitud.Focus();
        }
        protected void rbu_Descripcion_CheckedChanged(object sender, EventArgs e)
        {
            TipoBus = 2;
            txt_NumeroSolicitud.ReadOnly = true;
            txt_Descripcion.ReadOnly = false;
            rbu_PorNumero.Checked = false;
            txt_NumeroSolicitud.Text = string.Empty;
            txt_Descripcion.Focus();
        }
        #endregion
        #region Metodos
        public void IniciarControles()
        {
            txt_NumeroSolicitud.Text = string.Empty;
            txt_DescripcionControl.Text = string.Empty;
            if (TipoBus == 1)
            {
                rbu_PorNumero.Checked = true;
                rbu_NumeroSol_CheckedChanged(null, null);
            }
            else
            {
                rbu_PorDescripcion.Checked = true;
                rbu_Descripcion_CheckedChanged(null, null);
            }
            EmpresaBE obj = new EmpresaBE();
            List<EmpresaBE> lstEmpresa = new List<EmpresaBE>();
            lstEmpresa.Add(obj);
            dg_EmpresaControl.DataSource = lstEmpresa;
            dg_EmpresaControl.DataBind();
        }
        public void BuscarEmpresa(EmpresaBE obj)
        {
            List<EmpresaBE> lstEmpresa = new List<EmpresaBE>();
            lstEmpresa = oController.Obtener_Empresa(obj);
            if (lstEmpresa.Count > 0)
            {
                dg_EmpresaControl.DataSource = lstEmpresa;
                dg_EmpresaControl.DataBind();
                lbl_CantidadControl.Text = lstEmpresa.Count.ToString() + " Registros(s) encontrados";
            }
            else
            {
                lblMensaje.Visible = true;
                lblMensaje.Text = lblMensaje.Text + " No se ha encontrado Empresas para el criterio de busqueda.";
                lbl_CantidadControl.Text = "0 Registros(s) encontrados";
            }
        }
        private bool ValidarCarateres(string texto, int tipo)
        {
            bool res = true;
            string validar = string.Empty;
            string cadena = string.Empty;
            string carEspecial = string.Empty;
            if (texto.Trim() != string.Empty)
            {
                switch (tipo)
                {
                    case 0://Alfanumericos no caracteres especiales
                        cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ-0123456789. ";
                        break;
                    case 1://Solo numeros
                        cadena = "-0123456789";
                        break;
                    case 2://Solo Letras
                        cadena = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ ";
                        break;
                    case 3://Solo numeros y decimales
                        cadena = "-0123456789.";
                        break;
                    default:
                        break;
                }
                #region Validacion
                for (int i = 0; i < texto.Length; i++)
                {
                    validar = texto.Substring(i, 1);
                    if (cadena.IndexOf(validar.Trim()) == -1)
                    {
                        res = false;
                        break;
                    }
                }
                #endregion
            }
            else
                res = true;

            return res;
        }
        #endregion
        #region Propiedades
        public int TipoBus { get; set; }

        public TextBox txt_Descripcion
        {
            get { return txt_DescripcionControl; }
            set { txt_DescripcionControl = value; }
        }
        public TextBox txt_NumeroSolicitud
        {
            get { return txt_NumeroControl; }
            set { txt_NumeroControl = value; }
        }

        public Button btn_Buscar
        {
            get { return btnBuscarControl; }
            set { btnBuscarControl = value; }
        }
        public RadioButton rbu_PorNumero
        {
            get { return rbu_NumeroSol; }
            set { rbu_NumeroSol = value; }
        }
        public RadioButton rbu_PorDescripcion
        {
            get { return rbu_Descripcion; }
            set { rbu_Descripcion = value; }
        }
        public GridView dgEmpresas
        {
            get { return dg_EmpresaControl; }
            set { dg_EmpresaControl = value; }
        }
        public HiddenField hdfCodigo
        {
            get { return hdfCodigoControl; }
            set { hdfCodigoControl = value; }
        }
        public HiddenField hdfDescripcion
        {
            get { return hdfDescripcionControl; }
            set { hdfDescripcionControl = value; }
        }
        #endregion        
    }
}